package com.efast.cafe.portal.service.base;



import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.efast.cafe.framework.pager.Pagination;
import com.efast.cafe.framework.service.ICafeService;
import com.efast.cafe.portal.bean.base.CompanyBaseLovBean;
import com.efast.cafe.portal.bean.base.CompanyRecoveryDefaultLovBean;
import com.efast.cafe.portal.bean.base.DelCompanyLovBean;
import com.efast.cafe.portal.bean.base.PortalBaseLovBean;
import com.efast.cafe.portal.bean.base.PortalBaseLovQueryBean;
import com.efast.cafe.portal.entity.base.PortalBaseLov;
import com.efast.cafe.portal.remote.base.PortalBaseLovService;


/******************************************************************************
 * @File name   :      PortalBaseLovService.java
 *
 * @Author      :      xl
 *
 * @Date        :      2016-6-7
 *
 * @Copyright Notice: 
 * Copyright (c) 2016 Efast Serv. All  Rights Reserved.
 * This software is published under the terms of the Efast Software
 * License version 1.0, a copy of which has been included with this
 * distribution in the LICENSE.txt file.
 * 
 * 
 * ----------------------------------------------------------------------------
 * Date                   Who         Version        Comments
 * 2016-6-7 上午10:36:36        xl     1.0            Initial Version
 *****************************************************************************/
public interface IPortalBaseLovService  extends PortalBaseLovService,ICafeService<PortalBaseLov>{
	/**
	 * 通过ID查找 该节点下所属lov子节点
	 * @Date        :      2016-6-23
	 * @param pager		分页对象
	 * @param PortalBaseLovId  父节点
	 * @return
	 */
	public  Pagination<PortalBaseLov>  getPortalBaseLovListById(Pagination<PortalBaseLov> pager,Long PortalBaseLovId,boolean flag);
	/**
	 * 查找所有的lov列表 
	 * @Date        :      2016-6-23
	 * @param flag  是否为子公司查询
 	 * @return
	 */
	public  List<PortalBaseLov>  getPortalBaseLovListTree(String paramKey);
	
	/**
	 * 分页查询企业自定义的lov
	 * @param queryBean
	 * @return
	 */
	public PortalBaseLovQueryBean queryLovByCompanyParameterId(PortalBaseLovQueryBean queryBean);
	

	
	/**
	 * 企业修改自定义lov
	 * @param lov
	 */
	public void updateCompanyLov(CompanyBaseLovBean lov);
	
	public void delCompanyLov(DelCompanyLovBean bean);
	/**
	 * 企业恢复平台默认参数
	 * @param bean
	 */
	public void recoveryDefault(CompanyRecoveryDefaultLovBean bean);
	
	/**
	 * 分页查询用户自定义的lov
	 * @param queryBean
	 * @return
	 */
	public PortalBaseLovQueryBean queryLovByUserParameterId(PortalBaseLovQueryBean queryBean);
	/**
	 * 用户新增自定义lov
	 * @param lov
	 */
	public void addUserLov(PortalBaseLov lov);
	
	public void addCompanyLov(CompanyBaseLovBean lov);
	
	/**
	 * 企业修改自定义lov
	 * @param lov
	 */
	public void updateUserLov(PortalBaseLov lov);
	
	public void delUserLov(Integer id);
	
	/**
	 * 
	 * @Date        :      2016-6-24
	 * @param portalBaseLov 
	 * @param username
	 * @param flag  是否为平台修改
	 */
	public  void updatePortalBaseLov(PortalBaseLov  portalBaseLov);
	
	/**
	 * 
	 * @Date        :      2016-6-24
	 * @param portalBaseLov
	 * @param username
	 * @param flag 是否为平台添加
	 */
	public  void savePortalBaseLov(PortalBaseLov  portalBaseLov);
	
	
	
	/**
	 * 
	 * @Date        :      2016-8-17
	 * @param portalBasLovId
	 */
	public  void deletePortalBaseLov(Long portalBasLovId);
	
	/**
	 * 
	 * @Date        :      2016-8-17
	 * @param portalBasLovId
	 * @return
	 */
	public  PortalBaseLov getPortalBaseLovById(Long portalBasLovId);
	
	/**
	 * @Date        :      2016-8-9
	 * @param portalBaseParameterId
	 * @return
	 */
	public Map<String, Object> lovPage(Long portalBaseParameterId);
	
	
	/**
	 * 通过searchcode  查询下级参数列表
	 * 
	 */
	public List<PortalBaseLov> getPortalBaseLovSelect(String paramKey,String moduleName);
	
	/**
	 * 通过searchcode  查询其所属类型下所有参数
	 * 
	 */
	public List<PortalBaseLov> getPortalBaseLovParamKeyTree(String paramKey, String moduleName);
	

	/**
	 *  对应多个lov参数
	 * @param paramKey
	 * @param moduleName
	 * @return
	 */
	public Map<String, List<PortalBaseLov>> getPortalBaseLovSelectList(List<String> paramKeys, String moduleName);

	/**
	 * 查询多个module 对应多个lov参数
	 * @param paramKey
	 * @param moduleName
	 * @return
	 */
	public Map<String, Object> getPortalBaseLovSelectListByModule(PortalBaseLovBean portalBaseLovBean);
	
	public List<PortalBaseLov> queryListByParamKey(String paramKey);
	
	public Long insertListMap(List<Map<String, String>> map);
	
}
